Mobile phone game interface

ABSTRACT

Systems, apparatus and methods for enabling a mobile station to control a virtual world being executed on a console system are described. The method can include establishing a communication link between the mobile station and a console system, identifying user interface characteristics of the mobile station, and providing a controller application to the mobile station, the controller application being based on the identified user interface characteristics and configured to transform user interface inputs into controller commands. The method can further include receiving signals containing data representing the controller commands from the mobile station over the communication link and determining a sequence of events of the virtual world based on the received controller commands. In one aspect, the controller application can execute in the context of an application on the mobile station.

CROSS-REFERENCE TO RELATED APPLICATIONS

This is a continuation application of U.S. patent application Ser. No.15/279,800, filed Sep. 29, 2016, which is a continuation application ofU.S. patent application Ser. No. 14/171,528, filed Feb. 3, 2014 and nowU.S. Pat. No. 9,474,965, which is continuation application of U.S.patent application Ser. No. 13/493,832, filed Jun. 11, 2012 and now U.S.Pat. No. 8,641,531, which is a continuation of U.S. patent applicationSer. No. 12/133,968, filed Jun. 5, 2008 and now U.S. Pat. No. 8,200,795entitled “Mobile Phone Game Interface,” the entire contents of each ofwhich are hereby incorporated herein by reference.

BACKGROUND Field of the Invention

The invention relates to the field of video games, and specifically tomethods and systems for controlling a video game using a mobile phone.

Background of the Invention

The continual advancement of computer processing power is evident in thefield of computer based gaming. Processor intensive video games wereonce available only in standalone dedicated units manufactured for usein arcades. As computer processing capabilities advanced, the price ofpowerful processors and associated electronics such as memory, interfacechips, and displays, decreased to a level that allowed processor basedgames to be produced for the consumer market.

Video game systems include a console system or core unit that includes aprocessor, memory (e.g., Random Access Memory), and audio visualsubsystems such as a co-processor. The console system serves as a hubbetween the video display or monitor, various controllers (e.g., joysticks and other user interface devices), and external memory devicescontaining the game software.

Originally, game controllers were typically wired to the console andwere designed to send input signals to the console system over the wiredconnection. In recent times, wireless game controls have emerged. Thewireless game controls allow for a user not to be tethered to theconsole system. The wireless game controls were generally designed to becompatible with a single console system.

In recent times, individuals utilize many mobile and/or wireless devicesin their every day lives. These devices include multiple remotecontrols, lap top computers, cell phones, smart phones, Personal DigitalAssistants (PDAs), and other mobile devices. The ever increasing numberof these devices can be overwhelming and frustrating. Adding a wirelessgame controller to this already large list of devices adds to thefrustration. It would be advantageous to better utilize the existingmobile devices instead of adding another wireless device dedicated tocontrolling a video game console system.

BRIEF SUMMARY

A system, apparatus and method for controlling a console system with amobile station are described. A console system displays a virtual worldand receives inputs from a mobile station of one or more usersinteracting with the virtual world. The console system can identify userinterface characteristics of the mobile station. A game controllerapplication can be communicated to the mobile station. The gamecontroller application can be configured based on the identified userinterface characteristics.

The game controller application can utilize a wireless interface of themobile station to send game control signals to the console system. Theconsole system can receive the game control signals from the mobilestation and determine game results based on the received game controllercommands.

In one aspect, the disclosure includes a method of enabling a mobilestation to control a game. The method of this aspect includesestablishing a communication link between the mobile station and aconsole system, identifying user interface characteristics of the mobilestation, providing a game controller application to the mobile station,the game controller application being based on the identified userinterface characteristics and configured to transform user interfaceinputs into game controller commands. The method further includesreceiving signals containing data representing the game controllercommands from the mobile station, and determining game results based onthe received game controller commands.

In another aspect, the disclosure includes a system for enabling amobile station to control a game. The system of this aspect includes alocal area network (LAN) interface configured to establish acommunication link between the mobile station and a console system, andreceive signals containing data representing game controller commandsfrom the mobile station. The system further includes a game controllerapplication module configured to identify user interface characteristicsof the mobile station, and provide a game controller application to themobile station, the game controller application being based on theidentified user interface characteristics and configured to transformuser interface inputs into the game controller commands, and a gamesubsystem configured to determine game results based on the receivedgame controller commands.

In another aspect, the disclosure includes a method of controlling agame using a mobile station. The method of this aspect includesestablishing a communication link between the mobile station and aconsole system, transmitting mobile station identifying information tothe console system, and receiving a game controller application, thegame controller application corresponding to the mobile stationidentifying information, and configured to transform inputs to a userinterface of the mobile station into game controller commands. Themethod further includes storing the game controller application inmemory, executing the game controller application, and transmittingsignals containing data representing the game controller commands to theconsole system.

In another aspect, the disclosure includes a mobile station forcontrolling a game. The mobile station of this aspect includes a networkinterface configured to establish a communication link between themobile station and a console system, transmit mobile station identifyinginformation to the console system, receive a game controller applicationbased on the mobile station identifying information, and transmitsignals containing data representing game controller commands to theconsole system. The mobile station further includes a processorconfigured to store the game controller application in memory andexecute the game controller application, wherein the game controllerapplication is configured to transform inputs to a user interface of themobile station into the game controller commands.

In another aspect, the disclosure includes a method of distributing gamecontroller applications. The method of this aspect includes storing aplurality of game controller applications in memory, the plurality ofgame controller applications being configured to be executed on one of aplurality of different mobile stations, and configured to generate gamecontroller commands in response to inputs from a plurality of differentmobile station user interfaces. The method further includes receivingmobile station identifying information from a communication device, andtransmitting game controller application data to the communicationdevice, the game controller application data corresponding to one ormore of user interface characteristics of the identified mobile station,and a make and model of the identified mobile station.

In another aspect, the disclosure includes a system for distributinggame controller applications. The system of this aspect includes memoryfor storing a plurality of game controller applications, the pluralityof game controller applications being configured to be executed ondifferent mobile stations, and configured to generate game controllercommands in response to inputs from different mobile station userinterfaces. The system further includes a network interface, and aprocessor in electrical communication with the memory and the networkinterface and configured to receive mobile station identifyinginformation from a remote communication device over a network, andtransmit a game controller application to the remote communicationdevice, the game controller application being based on the receivedmobile station identifying information.

BRIEF DESCRIPTION OF THE DRAWINGS

The features, objects and advantages of embodiments of the disclosurewill become more apparent from the detailed description set forth belowwhen taken in conjunction with the drawings, in which like elements bearlike reference numerals.

FIG. 1 is a block diagram illustrating an example system in which aconsole system displays a game sequence on a video display and receivesgame controller commands from one or more mobile stations.

FIG. 2 is a functional block diagram of an example of a console systemfor displaying a virtual world on a video display and receiving gamecontroller commands from one or more mobile stations.

FIG. 3 is a functional block diagram of an example of a mobile stationfor controlling a game being executed on the console systems of FIG. 1or 2.

FIG. 4 is a functional block diagram of an example of a controllerapplication server for providing game controller applications to theconsole systems of FIG. 1 or 2 and/or the mobile station of FIG. 3.

FIG. 5 is a flowchart illustrating an example of a method of enabling amobile station to control a game being executed on a console system.

FIG. 6 is a flowchart illustrating an example of a method of controllinga game being executed on a console system using a mobile station.

FIGS. 7A and 7B are flow charts of an example of a method ofestablishing a communication link between a mobile station and a consolesystem.

FIG. 8 is a flow chart of an example of a method of communicating a gamecontroller application from a console system to a mobile station.

FIG. 9 is a flow chart of a method of distributing game controllerapplications from a controller application server to a console systemand/or a mobile station.

DETAILED DESCRIPTION

Advances in technology in recent years have resulted in the emergence ofmultitudes of mobile and/or wireless devices including lap topcomputers, cell phones, smart phones, Personal Digital Assistants(PDAs), and other mobile devices. Individuals are utilizing mobiledevices for more and more of their every day tasks including shopping,calendars, scheduling meetings, receiving emails, etc. These types ofmobile devices often support one or more wireless communicationtechnologies. Console systems can also support these wirelesscommunications technologies and can establish wireless connections withthese various mobile devices.

However, console systems have not exploited interacting with these typesof wireless devices. One reason that these devices have not beenexploited to interact with game console systems is that they typicallyhave very different user interfaces. It was not feasible to designcontrol signaling methods to make the use of the wide ranging mobilestation user interfaces in a way that provided a pleasant and userfriendly experience.

FIG. 1 is a block diagram illustrating an example system 100 in which aconsole system 102 displays, in one aspect, a game sequence on a videodisplay 104 and receives game controller commands from one or moremobile stations 108. The console system 102 is an interactive computeror electronic device that drives the video display 104 via acommunication link 122 to display a virtual world. The communicationlink 122 can be a wire line (e.g., USB, or a cable) or a wirelessconnection (e.g., 802.x, Bluetooth, or any wireless communicationtechnology).

The console system 102 can receive inputs form one or more gamecontrollers 110. The game controller 110 is connected to the console 102via a communication link 128. The communication link 128 can be a wireline connection (e.g., USB, or a cable) or a wireless connection (e.g.,802.x, Bluetooth, or any wireless communication technology). The gamecontroller 110 can include one or more input devices such as a joystick,a mouse, toggle switches, etc.

In addition to games, other types of virtual worlds can be displayed onthe video display 104 by the console system 102. The virtual worlddisplayed on the video display 104 can be a two dimensional or threedimensional virtual world where a user can manipulate and interact withon screen objects by providing inputs to the virtual world through thegame controller 110. The virtual world can also be an educationalsequence of images and/or videos where the user progresses through theeducational course based on interactions with on screen buttons, menus,etc. The virtual world can also be a commercial tour such as a store,catalog or warehouse where the user progresses through a virtualshopping spree through the catalog or store or warehouse. Other virtualworlds can also be depicted.

In addition to or as a substitute for the game controller 110, theconsole system 102 can also receive inputs from one or more mobilestations 108. As used herein, a mobile station refers to a device suchas a cellular or other wireless communication device, personalcommunication system (PCS) device, personal navigation device, laptop orother suitable mobile station capable of receiving and processingwireless signals such as cellular, satellite, wide area networks,metropolitan area networks, etc. The term “mobile station” is alsointended to include devices which communicate with a personal navigationdevice (PND), such as by short-range wireless (e.g., local area networksor personal area networks), infrared, wireline connection, or otherconnection. Also, “mobile station” is intended to include all devices,including wireless communication devices, computers, laptops, etc. whichare capable of communication with a server, such as via the Internet,WiFi, or other network. Any operable combination of the above are alsoconsidered a “mobile station.”

In one aspect, the console system 102 and the mobile station 108establish a wireless communication link 126 between the console system102 and the mobile station 108. The wireless communication link 126 canbe, for example, a short range wireless network such as a Bluetoothnetwork, an 802.11x network or an 802.15x network. In another aspect,the console system 102 and the mobile station 108 communicate over awire line communication link 130 such as, for example, one utilizing aUniversal Serial Bus (USB) connection.

The establishment of the communication link 126 or 130 can utilize anyof various device discovery protocols and can be initiated by either theconsole system 102 or the mobile station 108. In one aspect, the consolesystem 102 detects the presence of the mobile station 108 and theconsole system can initiate the establishment of the communication link.In another aspect, the mobile station 108 can initiate establishment ofthe communication link 126, e.g., by sending a paging signal.

In yet another aspect, an intermediate device such as a personalcomputer (PC) 112 can communicate with the console system 102 and themobile station 108 on a wireless communication link 126 or a wired link130. In this aspect, the PC 112 can communicate with the console system102. The PC 112 can forward any game controller commands and othersignals received from the mobile station 108 to the console system 102.Likewise, the PC 112 can perform the functions of the console system 102in establishing either the wireless communication link 126 or the wiredcommunication link 130 between the PC 112 and the mobile station 108.

The system 100 also includes, in some aspects, a controller applicationserver 106. The controller application server 106 stores a plurality ofgame controller applications configured for user interfaces of multiplemobile stations 108. The controller application server 106 is connectedto a network 124 that can also be accessed by the console system 102,the PC 112 and/or the mobile station 108, depending on the aspect. Byidentifying the type of user interface elements of the mobile station108, a proper game controller application can be communicated to themobile station 108, either by the console system 102, the PC 112 or thecontroller application server 106.

FIG. 2 is a functional block diagram of an example of a console system200 for displaying a virtual world on a video display and receiving gamecontroller commands from one or more of the mobile stations 108. Forexample, all or portions of the console system 200 can be contained inthe console system 102 and/or the PC 112 of the system 100 of FIG. 1. Inthis example, the console system 200 includes one or more processors224. The processor 224 can include one or more application specificintegrated circuits (ASICs), digital signal processors (DSPs), digitalsignal processing devices (DSPDs), programmable logic devices (PLDs),field programmable gate arrays (FPGAs), controllers, micro-controllers,microprocessors, electronic devices, other electronic units, or acombination thereof.

The processor 224 is configured to store data received by one or moreinterfaces and process and store the data on a memory 226. The memory226 can be implemented within the processor 224 or external to theprocessor 224. As used herein, the term memory refers to any type oflong term, short term, volatile, nonvolatile, or other memory and is notto be limited to any particular type of memory or number of memories ortype of media upon which memory is stored.

The processor 224 is also configured to communicate data and/orinstructions to and/or from a game subsystem 222, a network interface228, a local area network (LAN) interface 234 and an input interface232. The game subsystem 222 is configured to provide video and audiodata to the video display 104 over the video connection 122. The gamesubsystem 222 receives various instructions from the processor 224. Theinstructions can include user inputs received from the game controller110 via the input interface 232, or from the one or more mobile stations108 via the LAN interface 234. In either case, the user inputs are usedby the game subsystem 222 to affect the sequence of events of thevirtual world that is being displayed. Using the inputs, the gamesubsystem 222 executes the virtual world instructions to display theresulting video and audio sequence on the video display 104.

The game subsystem 222 can interface with a virtual world subsystem (notshown). The virtual world subsystem could be in the form of software,hardware and/or firmware. In the case of the virtual world subsystemcomprising software, the virtual world software could be contained ininternal memory such as the memory 226. The virtual world subsystemcould also be an external device such as a video cartridge, video DVD orCD, or other form of interactive video device. The video output of thegame subsystem 222 is determined by the interactions between the gamesubsystem 222 and the virtual world subsystem and depends on the userinputs that are received.

The input interface 232 is configured to receive signals from the gamecontroller 110 over the communication link 128. As discussed above, thegame controller 110 can include one or more types of input devicesincluding, for example, a joystick, a keyboard, a mouse, a touchpad, atoggle switch, a track ball, a scroll wheel, etc. In one aspect, theuser input signals received by the input interface 232 can be forwardedto the processor 224 as they are received. In other aspects, the inputinterface 232 can process the received input and transform them intoanother format before forwarding the transformed inputs to the processor224. For example, the received inputs can be analog signals, and theinput interface can transform these to digital signals in apredetermined format.

The LAN interface 234 is configured to transmit and receive data overthe wireless connection 126 or the wired connection 130 discussed above,e.g., from the one or more wireless stations 108. The LAN interface 234can receive information related to identifying the user interfacecharacteristics of the mobile station 108. The LAN interface 234 cantransmit game controller application data to the mobile station 108,where the game controller application is configured based on theidentified user interface characteristics of the mobile station 108.

The LAN interface 234 can receive the game control commands from themobile station 108. The LAN interface 234 can also transmit and receivesignals necessary for establishing and maintaining the communicationlinks 126 and/or 130 between the console system 200 and the mobilestation 108. In aspects where a wireless connection 126 is used, the LANinterface 234 can be configured to communicate over a short rangewireless network such as an IEEE 802.11x network, a Bluetooth network,an IEEE 802.15x, or some other type of network.

The network interface 228 is configured to transmit and receive dataover the network 124. The network 124 can include one or more wiredand/or wireless networks. In one aspect, the network 124 is used tocommunicate with the controller application server 106 as illustrated inthe example system 100 of FIG. 1. The network interface 228 can receivethe information representing the game controller application from thecontroller application server 106.

As discussed above, portions of the console system 200 can be located inthe PC 112 of the system 100 illustrated in FIG. 1. For example, thenetwork interface 228 and the LAN interface 234 could be located in thePC serving as an intermediary between the mobile station 108 and theconsole system 102. In this aspect, the PC 112 can forward data receivedfrom the mobile station 108 to the console system 102 and forward datareceived from the console system 102 to the mobile station 108. Inaddition, for aspects where the network interface 228 is contained inthe PC 112, the game controller application can be obtained by the PC112 from the controller application server 106 and forwarded to themobile station 108.

The processor 224 is also configured to perform instructions forexecuting the methods of a game controller application module 230. Thegame controller application module 230 can include firmware and/orsoftware implementations of the methodologies discussed below. In thecase of software implementations, the software code of the gamecontroller application module 230 can be stored on the memory 226.

In one aspect, the game controller application module 230 can identifyuser interface characteristics of the mobile station 108 that is beingused as a game controller. In this aspect, the game controllerapplication module 230 provides to the mobile station 108, a gamecontroller application that is based on the identified user interfacecharacteristics of the mobile station 108. The game controllerapplication is configured to transform user interface inputs into gamecontroller commands which are communicated to the game subsystem 222 forexecution.

The user interface characteristics can be identified in different ways.For example, in one aspect, the game controller application module 230can receive make and model information about the mobile station 108(e.g., using the International Mobile Equipment Identity or IMEI). Theuser interface characteristics of different makes and models of mobilestations can be contained in a database. In another aspect, the gamecontroller application module 230 can receive user interface descriptiondata directly from the mobile station 108. In this aspect, the userinterface description data can be received in a standardized form suchas the Human Interface Device (HID) profile of the USB standard (alsoused by the Bluetooth standard). The HID protocol enables a device, suchas the console systems 102 or 200, for example, to discover the featureset of the user interface of another device, such as the mobile station108, for example. In either aspect, the game controller applicationmodule 230 can identify the user interface characteristics of thespecific make and model and create or obtain a game controllerapplication based on the identified user interface.

In one aspect, the game controller application module 230 can create agame controller application based on the identified user interfacecharacteristics of the mobile station 108. The user interface cancomprise one or more input devices including a key pad, a toggle switch,a roller, a joy stick, a touchpad, a track ball, a scroll wheel, etc.The game controller application can then map different game commands tothe actuation signals of the identified input devices. In the case ofthe user interface comprising one or more touchpads, the game controllerapplication could map various finger gestures to the game controllercommands.

In another aspect, the game controller application module 230 can obtaina preconfigured game controller application. For example, if the userinterface information comprises a make and model (or IMEI) of the mobilestation, a database of game controller applications can be searched foran application corresponding to the make and model. The database ofapplications can be local to the console system 200 (e.g., in memory 226or a CD or DVD or other memory device). The database of game controllerapplications could also be located externally in the controllerapplication server 106 or in the PC 112.

In some aspects, the game controller application module 230 can belocated entirely, or partially in the game controller application server106. In these aspects, user interface identifying information can betransmitted to the game controller application server 106 from theconsole system 200 or from the PC 112 depending on the aspect. In theseaspects, the information that is to be communicated to the mobilestation 108 can be transmitted to the console system 200, to the PC 112or directly to the mobile station 108 from the game controllerapplication server 106.

FIG. 3 is a functional block diagram of an example of a mobile station108 for controlling a game being executed on the console systems 102 or200 of FIG. 1 or 2. In this example, the mobile station 108 includes oneor more processors 305, a wireless transceiver 315, a local area network(LAN) or personal area network (PAN) interface 320, a user interface 325and optionally a display 330. The processor 305 can include one or moreapplication specific integrated circuits (ASICs), digital signalprocessors (DSPs), digital signal processing devices (DSPDs),programmable logic devices (PLDs), field programmable gate arrays(FPGAs), controllers, micro-controllers, microprocessors, electronicdevices, other electronic units, or a combination thereof.

The processor 305 is configured to store data received by the wirelesstransceiver 315 and the LAN/PAN interface 320 and process and store thedata on a memory 310. The memory 310 can be implemented within theprocessor 305 or external to the processor 305. As used herein, the termmemory refers to any type of long term, short term, volatile,nonvolatile, or other memory and is not to be limited to any particulartype of memory or number of memories or type of media upon which memoryis stored.

The processor 305 is also configured to execute the game controllerapplication provided to the mobile station 108. The game controllerapplication can be downloaded or otherwise received by the mobilestation 108, e.g., via the LAN/PAN interface 320, via the wirelesstransceiver 315 or from a memory device such as a CD, DVD, memory stick,etc. The processor can store the game controller application in thememory 310. In some aspects, the processor can execute the gamecontroller application using a platform independent system. For example,the processor could execute a game controller application in the form ofa Java Applet using a Java Virtual Machine.

The processor 305 is also configured to receive input signals from theuser interface 325. The user interface 325 can comprise one or moreinput devices including a key pad, a toggle switch, a roller, a joystick, a touchpad, a track ball, a scroll wheel, etc. The user interfaceelements are configured to generate these input signals when the usermanipulates, actuates, or in some way interacts with the various userinterface elements. The processor 305 processes the received inputsignals using the game controller application. Upon execution, the gamecontroller application generates game controller commands in response tothe input signals.

The processor 305 can also be configured to drive the display 330 todisplay graphics associated with the user interface 325 of the mobilestation 108 as well as data related to data received by the wirelesstransceiver 315 or the LAN/PAN interface 320. For example, game resultsthat are communicated to the mobile station 108 from the console system102 can be displayed on the display 330.

The wireless transceiver 315 can be configured to receive and transmitover a wireless network 324. The wireless transceiver 315 can beconfigured to operate over any of several networks including a CodeDivision Multiple Access (CDMA) network, a Time Division Multiple Access(TDMA) network, a Frequency Division Multiple Access (FDMA) network, anOrthogonal Frequency Division Multiple Access (OFDMA) network, aSingle-Carrier Frequency Division Multiple Access (SC-FDMA) network, andso on. A CDMA network may implement one or more radio accesstechnologies (RATs) such as cdma2000, Wideband-CDMA (W-CDMA), and so on.Cdma2000 includes IS-95, IS-2000, and IS-856 standards. A TDMA networkmay implement Global System for Mobile Communications (GSM), DigitalAdvanced Mobile Phone System (D-AMPS), or some other RAT. GSM and W-CDMAare described in documents from a consortium named “3rd GenerationPartnership Project” (3GPP). Cdma2000 is described in documents from aconsortium named “3rd Generation Partnership Project 2” (3GPP2). 3GPPand 3GPP2 documents are publicly available.

The wireless transceiver 315 can be omitted in some aspects of mobilestations 108. For example, PDA's, laptop computers, and navigationdevices do not necessarily include the wireless transceiver 315.

The LAN/PAN interface 320 can be configured to receive and transmit overa wired LAN or PAN 130. The LAN/PAN interface 320 can also be configuredto receive and transmit over a wireless LAN or PAN 126 or other type ofshort range wireless network. Such short range wireless networks includean IEEE 802.11x network, a Bluetooth network, an IEEE 802.15x, or someother type of network. The LAN/PAN interface 320 can transmit the gamecontroller commands generated by the game controller application to theconsole system 102, or the PC 112.

FIG. 4 is a functional block diagram of an example of a controllerapplication server 106 for providing game controller applications to theconsole systems 102 or 200 of FIG. 1 or 2, the PC 112 of FIG. 1, and/orthe mobile station 108 of FIG. 3. In this example, the controllerapplication server 106 includes one or more processors 405, and anetwork interface 420. The processor 405 can include one or moreapplication specific integrated circuits (ASICs), digital signalprocessors (DSPs), digital signal processing devices (DSPDs),programmable logic devices (PLDs), field programmable gate arrays(FPGAs), controllers, micro-controllers, microprocessors, electronicdevices, other electronic units, or a combination thereof.

The processor 405 is configured to store data received by the networkinterface 420 and on a memory 410. The memory 410 can be implementedwithin the processor 405 or external to the processor 405. As usedherein, the term memory refers to any type of long term, short term,volatile, nonvolatile, or other memory and is not to be limited to anyparticular type of memory or number of memories or type of media uponwhich memory is stored.

The memory 410 can also store previously generated versions of gamecontroller applications that are configured based on the user interfacecharacteristics of multiple types of mobile stations 108. By locatingthe game controller applications in the controller application server106, new and/or updated game controller applications can be madeavailable to the console system 102 or 200. In this way new mobilestation user interfaces can be accommodated and improvements can be madeto previous game controller applications.

In some aspects, the controller application server 106 includes all orpart of the game controller application module 230 discussed above inreference to FIG. 2. For example, the console system 200 could simplysend the make and model information to the controller application server106 which could then create a new controller application or retrieve anexisting one. The controller application server 106 could then transmitthe game controller application to the console system 200. In anotheraspect, the mobile station 108 itself could obtain the controllerapplication directly from the controller application server 106. In thisaspect, the console system could forward the URL of the controllerapplication server 106 to the mobile station 108, which could thenretrieve the selected game controller application.

The game controller applications can be in the form of an applet. Anapplet is a software component that can be invoked within the context ofanother program such as a operating system or web browser of the mobilestation 108.

An applet is written in a compiled language as opposed to a scriptedlanguage such as HTML. Since the applet is a compiled language it can beperformed more quickly than an interpreted language such as HTML. Anexample of one type of applet is a Java applet. A Java applet is anapplet delivered in the form of Java byte code. Most mobile stations 108support the use of Java applets through a Java Virtual Machine (JVM).However other languages can also be used for the applet of the gamecontroller applications.

Applets can be platform independent. This is an advantage since the samegame controller application (or at least a slightly modifiedapplication) could be used for any mobile stations with similar oridentical user interface characteristics.

The game controller applications can be downloaded to the mobile station108 and executed within the environment of the operating system of themobile station 108 (or within another application such as a webbrowser). The game controller application can be written such that uponexecution within the mobile station 108, the game controller applicationinvokes a library of wireless functions of the LAN/PAN interface 320 inthe mobile station 108. The wireless library can be a short rangewireless library such as an IEEE 802.11x library, a Bluetooth library,and IEEE 802.15x library, or other short range wireless library.

By invoking the library functions of the mobile station 108, the gamecontroller application can perform the communications with the consolesystem 200 to control the actions of the game being executed.

FIG. 5 is a flowchart illustrating an example of a method 500 ofenabling a mobile station to control a game being executed on a consolesystem. The process 500 can be executed, for example, on the consolesystem 200 of FIG. 2. As was discussed above, portions of the consolesystem 200 can be located in the PC 112 of FIG. 1, e.g., the LANinterface 234 and/or the network interface 228.

The method 500 starts at block 505 where the LAN interface 234establishes a communication link with the mobile station 108 (via theLAN/PAN interface 320). The communication link can be, for example, overthe wired connection 130 or the wireless connection 126. The wiredconnection 130 can be, for example, a USB connection. The wirelessconnection can be, for example, a short range wireless connection over anetwork such as n IEEE 802.11x network, a Bluetooth network, an IEEE802.15x, or some other type of network.

The establishment of a wired communication link 130 at the block 505 canutilize protocols such as are established in the USB standard. Theestablishment of a short range wireless connection 126 can utilize anyof various device discovery protocols and can be initiated by either theconsole system 200 or the mobile station 108. In one aspect, the consolesystem 200 detects the presence of the mobile station 108 and theconsole system can initiate the establishment of the short rangewireless connection 126. In another aspect, the mobile station 108 caninitiate establishment of the short range wireless connection, e.g., bysending a paging signal.

Multiple communication links can be established between the consolesystem 200 and multiple mobile stations 108 by performing the functionsat the block 505 multiple times.

Upon establishing the communication link at the block 505, the process500 continues to block 510 where the console system 200 identifies userinterface characteristics of the mobile station 108. In one aspect, theconsole system 500 requests and receives, via the LAN interface 234,information identifying the make and model (e.g., the IMEI in the caseof a mobile phone) of the mobile station 108. Using the IMEI, or othermake and model identifier, the game controller application module 230can identify the user interface characteristics, or alternativelyidentify a pre-configured game controller application based on theidentified user interface characteristics.

In another aspect, the mobile station 108 and the console system 200 canutilize the HID protocol to allow the console system to discover theuser interface characteristics of the mobile station. The HID protocolis supported by both the USB standard and the Bluetooth short rangewireless standard. Other interface protocols may also be used.

Use of a protocol such as the HID protocol enables the console system200 to utilize a single HID driver for parsing and dynamicallyassociating I/O data with application functionality, such as usersupplied game control commands. The HID protocol enables discovery ofthe I/O features of devices such as a keyboard, mouse, touchpad,pointing stick, trackball, a scroll wheel and others.

When utilizing the HID protocol at the block 510, the console system 200is the “host” device and the mobile station 108 is the “client” device,using the HID terminology. The mobile station “client” presents an “HIDdescriptor” to the console system “host” device. The presentation of theHID descriptor to the console system can be done utilizing the “reportmode” of the HID protocol. The HID descriptor is an array of bytes thatdescribe the mobile station's data packets that result from actuation ofthe different input devices in the user interface 325. The HIDdescriptor can include the number of data packets supported by themobile station user interface 325, the size of the packets and thepurpose of each bit in the packets. Upon receiving the HID descriptorfrom the mobile station 108 at the block 510, the console HID driver ofthe console system 200 can parse the HID descriptor and discover theuser interface characteristics of the mobile station 108.

In aspects where the PC 112 is acting as an intermediary between theconsole system 200 and the mobile station 108, the HID driver can be inthe PC 112. In these aspects, the parsing of the HID descriptor andreceived packets can be performed by the processor of the PC 112.

Upon identifying the user interface characteristics at the block 510,the process 500 continues to block 515 where the game controllerapplication module 230 provides a game controller application to themobile station 108. The game controller application is based on theidentified user interface characteristics of the mobile station 108. Thegame controller application can be provided to the mobile station inseveral different ways, depending on the aspect.

In one aspect, the game controller application module 230 obtains apreconfigured game controller application and transmits the gamecontroller application to the mobile station 108. The game controllerapplication can be obtained from internal or external memory availableto the console system 200 (e.g., a hard disk drive, an external DVD orCD or memory card, or from the PC 112). The game controller applicationcan also be obtained from a third party such as, for example, thecontroller application server 106.

Regardless of where the preconfigured game controller application isobtained, two basic methods can be used to obtain the most appropriateapplication. In one aspect, preconfigured applications can be stored andcross referenced to the make and model of mobile station 108 for whichthey were configured. In this aspect and IMEI, or other informationidentifying a make and model of the mobile station 108 (which wasobtained at the block 510 of the process 500), can be used to locate thegame controller application. In another aspect, the preconfiguredapplications can be stored and cross referenced to features present in ainterface device description such as an HID descriptor discussed above.In this aspect, the game controller application can be identified basedon UI features that are or are not present in the HID descriptor, forexample.

Upon obtaining the game controller application, the LAN interface 234can transmit the game controller application, over the wired connection130 or the wireless connection 126, to the mobile station 108.

In another aspect of providing the game controller application at theblock 515, the game controller application can be created, e.g., by thegame controller application module 230 or by the controller applicationserver 106. The user interface characteristics can be identified bylooking them up in a database of user interfaces cross referenced tomake and model information. The user interface characteristics can beparsed from an interface description such as the HID descriptor.Regardless of how the user interface characteristics are identified, thegame controller application can be created by mapping the signals outputby the various user interface features to various input signals requiredto operate the game being played.

The mapping of the user interface elements to the various controlcommands necessary to control the game can improve the quality of theuser's experience. Certain user interface elements are more appropriatefor certain control commands. For example, a roller ball, joystick ortouch pad, or other analog-type controllers can be more appropriate forcontrolling movement of a curser or other analog-type of command. Ananalog-type command is a command characterized by two or moreparameters. Analog types of commands include for example, pressing of agas pedal (where the distance pressed determines the acceleration),moving an object in two dimensions, moving an object in one direction ata variable speed or acceleration, hitting a ball at a variable energylevel, etc. Discrete user interface elements such as keys, toggleswitches, etc. can be more appropriate for discrete events. Discreteevents can include anything from the use of a particular weapon, turningon a virtual machine, choosing a yes or no answer to a question, etc.

The game controller application module 230 can be configured to map thevarious user interface elements in ways to improve the user experience.Basic rules can be derived to prioritize which user interface elementsshould be used for which control commands for which games. These rulescan be used to map discrete user interface elements (keys, toggleswitches, etc.) to discrete type controller commands and to mapanalog-type or multidimensional user interface elements to the analogtype or multidimensional control commands. Upon creating the gamecontroller application, the game controller application is transmittedto the mobile station 108 at the block 515.

In yet another aspect of providing the game controller application atthe block 515, the game controller application can be provided by athird party, e.g., by the controller application server 106. In thisaspect, the user interface characteristics can be communicated to thethird party. For example, the make and model or user interfacedescription obtained at the block 510 can be communicated from theconsole system 200 to the controller application server 106. Thecontroller application server 106 can then retrieve a preconfiguredcontroller application or create a new one using methods similar tothose discussed above in reference to the game controller applicationmodule functions performed at the block 515.

A network address of the controller application server 106 can becommunicated to the mobile station 108. The mobile station 108 can thendownload the game controller application from the controller applicationserver 106. Alternatively, a network address that is available to themobile station 108 can be communicated to the controller applicationserver 106. The controller application server 106 can then download thegame controller application to the network address of the mobile station108.

Upon the game controller application being provided to the mobilestation 108 at the block 515, the process 500 can proceed to block 520where the game subsystem 222 starts a new game or other virtual worldwith the mobiles station 108 as a controller. In some aspects, the gamecan be started previous to the establishment of the communication linkwith the mobile station 108. In these aspects the game subsystem 222 canadd the mobile station 108 as a controller into the game that is alreadystarted.

After the mobile station has been added as a controller to a new game orincluded in a current game at the block 520, the process 500 continuesto block 525 where the LAN interface 234 receives signals containinggame controller commands from the mobile station 108. The receivedcommands contain data packets generated by the game controllerapplication in response to the user of the mobile station 108 actuatingvarious user interface elements. The received data packets can beprocessed, e.g., decoded, decrypted, de-packetized by the LAN interface234 and/or the processor 224. The processing of the received packets cantransform the controller command signals into a format that can besubsequently used by the game subsystem 222 at block 530.

At the block 530, the game subsystem 222 can determine game resultsbased on the received and possibly processed controller commands.Determining the game results at the block 530 can include updatingvarious states of other users participating in the game, generatingvideo and audio data, determining the next sequence of events to proceedto, etc. In the case of video and audio data being determined, thisvideo and audio data can be communicated by the game subsystem 222 to bedisplayed on the video display 104 of FIG. 1.

In one aspect, the game results generated at the block 530, and thendisplayed on the video display 104, can be instructions on how to usethe user interface 325 of the mobile station 108 to control the variousgame commands. This can be done prior to starting the game, uponstarting the game or in the middle of a current game (e.g., by pausingthe game action or by displaying the instructions in a sub-window of thedisplay).

In some aspects, upon determining game results at the block 530, theprocess 500 continues to optional block 535. Generally, the mobilestation 108 has a limited display capability and/or a limited powersupply. In this case, the video display 104 can be used for all ornearly all the output and the user can simply observe the display 104.However, in some aspects, video and/or audio output can be transmittedto the mobile station at optional block 535. For example, if a game ofpoker is being played, the hidden cards in the user's hand can bedisplayed only on the mobile station 108. In the aspects where optionalblock 535 is used, the LAN interface 234 can transmit game results tothe mobile station 108 over the wired connection 130 or the wirelessconnection 126.

In one aspect, the game results transmitted at the optional block 535are the instructions on how to use the user interface 325 of the mobilestation 108 to control the various game commands.

Upon determining the game results at the block 530, and optionallycommunicating the game results to the mobile station 108 at the block535, the process 500 continues at block 540 where the game subsystem 222determines if the game is over. If the game is not over, the process 500returns to block 525, in this example, to continue receiving controllercommands and performing the functions at the blocks 530, 535 and 540. Asdiscussed above, the console system 200 can perform the functions ofblocks 505, 510 and 515 in order to add new mobile stations 108 to thegame while the game is being executed at the blocks 525-540.

If it is determined that the game is over at decision block 540, theprocess 500 continues to block 545 where the game is terminated. In oneaspect, upon terminating the game at the block 545, the process 500returns to the block 520 to start a new game or at least query the userif a new game is desired. It should be noted that the blocks of method500 in FIG. 5 can be rearranged, combined, modified and in some casesomitted.

FIG. 6 is a flowchart illustrating an example of a method 600 ofcontrolling a game being executed on a console system using a mobilestation. The method 600 can be executed, for example, on the mobilestation 108 of FIG. 3 with the game being executed on the console system200 of FIG. 2.

The method 600 starts at block 605 where the LAN/PAN interface 320establishes a communication link with the LAN interface 234 of theconsole system 200, or an intermediary device such as the PC 112illustrated in FIG. 1. The communication link can be, for example, overthe wired connection 130 or the wireless connection 126. The wiredconnection 130 can be, for example, a USB connection. The wirelessconnection can be, for example, a short range wireless connection over anetwork such as n IEEE 802.11x network, a Bluetooth network, an IEEE802.15x, or some other type of network.

The establishment of a wired communication link 130 at the block 605 canutilize protocols such as are established in the USB standard. Theestablishment of a short range wireless connection 126 can utilize anyof various device discovery protocols and can be initiated by either theconsole system 200 or the mobile station 108. In one aspect, the consolesystem 200 detects the presence of the mobile station 108 and theconsole system can initiate the establishment of the short rangewireless connection 126. In another aspect, the mobile station 108 caninitiate establishment of the short range wireless connection, e.g., bysending a paging signal.

Upon establishing the communication link at the block 605, the process600 continues at block 610 where the LAN/PAN interface 320 transmitsmobile station identifying information to the console system 200. In oneaspect, the mobile station 108 transmits information identifying themake and model (e.g., the IMEI in the case of a mobile phone) of themobile station 108. This transmission can be in response to a requestmessage received from the console system 500. As discussed above, usingthe IMEI, or other make and model identifier, the game controllerapplication module 230 of the console system can identify the userinterface characteristics, or alternatively identify a pre-configuredgame controller application based on the identified user interfacecharacteristics.

In another aspect, the mobile station 108 and the console system 200 canutilize the HID protocol, discussed above, to allow the console system200 to discover the user interface characteristics of the mobile station108. In this aspect, the mobile station identifying information is auser interface descriptor such as the HID descriptor. The HID protocolis supported by both the wired USB standard and the Bluetooth shortrange wireless standard and thus, both the wired connection 130 and/orthe wireless connection 126 can be utilized. Other interface protocolsmay also be used.

As was described above, the mobile station 108 can transmit an HIDdescriptor to the console system 200. In aspects where the PC 112 isacting as an intermediary between the console system 102 and the mobilestation 108, the HID descriptor can be transmitted to the PC 112. TheHID descriptor can be stored in the memory 310 of the mobile station108. The mobile station 108 does not need to be able to generate the HIDdescriptor and thus does not require being able to support an HIDdriver.

After transmitting the mobile station identifying information at theblock 610, the process 600 continues to block 615 where the LAN/PANinterface 320 receives a game controller application corresponding tothe user interface 325 of the mobile station 108. The game controllerapplication transforms user supplied inputs (actuations of various userinterface elements) into game controller commands.

As was described above, the game controller application can be obtainedin different ways. In one aspect, the game controller application isreceived directly from the console system 200. In another aspect, thegame controller application can be received from the intermediary PC112. In another aspect, the game controller application is received fromthe controller application server 106. In yet another aspect, a networkaddress of a remote supplier, such as the controller application server106, can be received from the console system 200 or the intermediary PC112.

In the aspect where a network address is received at the block 615, themobile station 108 can retrieve the game controller application from theremote server at the received network address. The mobile station 108can retrieve the game controller application by accessing the internet,for example, using an internet connection that is accessible via theLAN/PAN interface 320. Alternatively, the game controller applicationcan be retrieved using the wireless transceiver 315 over the wirelessnetwork 324.

Upon receiving the game controller application at the block 615, theprocessor 305 stores the game controller application to the memory 310at block 620. Upon storing the game controller application at the block620, the process 600 continues at block 625 where the processor 305executes the game controller application. The processor 305 can executethe game controller via a platform independent program such as a JVM, inaspects where the game controller application is written in a platformindependent language such as Java.

The game controller application receives signals from the various userinterface elements when the user of the mobile station 108 manipulates,actuates, or in some way interacts with the various user interfaceelements. Upon receiving these user interface generated signals, thegame controller application generates game controller command datapackets including the input signals or transformed versions of theinputs signals (e.g., data packets can include game input signals thathave been transformed into a game controller command format compatiblewith the console system 200). The LAN/PAN interface 320 transmits thegenerated data packets containing the game controller commands at block630.

In some aspects, the LAN/PAN interface 320 can receive game resultsgenerated by the console system 200 at optional block 635. The gameresults can include video to be displayed on the display 330 and/oraudio. In one aspect, the game results received at the optional block635 are instructions on how to use the user interface 325 of the mobilestation 108 to control the game.

The process 600 continues to decision block 640. If it is determined atthe decision block 640, that the game is not over, the process 600 loopsback and game controller commands continue to be generated by the gamecontroller application and transmitted at the block 630, and optionallygame results are received at the block 635. If the processor 305determines, at decision block 640, that the game is over, the game canbe terminated at block 645, or a new game can be started. It should benoted that the blocks of method 600 in FIG. 6 can be rearranged,combined, modified and in some cases omitted.

As was described above, a short range wireless network can be utilizedfor communications between the mobile station 108 and the console system102. In one aspect a Bluetooth network is used. In a Bluetoothcommunication system the mobile stations 108 and other enabled devicesdo not constantly use one frequency channel for transmission andreception in a time division multiple access manner. The Bluetoothstandard also defines a combination of Time- and Frequency-DivisionMultiple Access (TDMA/FDMA). A Bluetooth transceiver utilizes frequencyhopping to reduce interference and fading. The channel is represented bya pseudo-random hopping sequence hopping through 79 or 23 RF channelsdepending on the country. The hopping sequence is unique for the PAN andis determined by the Bluetooth device address of the master. The phasein the hopping sequence is determined by the Bluetooth clock of themaster. The channel is divided into time slots where each slotcorresponds to an RF hop frequency.

Consecutive hops correspond to different RF hop frequencies. The nominalhop rate is 1600 hops/s. Typically, all Bluetooth devices participatingin the PAN are time and hop synchronized to the channel. The channel isdivided into time slots of 625 μs in length. In the time slots a masterand slave can transmit packets. There are two types of links that can beestablished between the master and the slave: SynchronousConnection-Oriented (SCO) link and Asynchronous Connection-Less (ACL)link.

The SCO link is a point-to-point link between a master and a singleslave in the PAN. The master maintains the SCO link by using reservedslots at regular intervals. As the SCO link reserves slots, it can beconsidered as a circuit-switched connection between the master and theslave. The SCO link typically supports time-bounded information such asvoice. The master can support up to seven SCO links to the same slave orto different slaves. A slave can support up to three SCO links from thesame master or two SCO links if the links originate from differentmasters. SCO packets are never retransmitted.

The ACL link is a point-to-multipoint link between the master and allthe slaves participating on the PAN. In the slots not reserved for theSCO links, the master can establish an ACL link on a per-slot basis toany slave, including the slave devices already engaged in an SCO link.The ACL link provides a packet-switched connection between the masterand all active slaves participating in the PAN. Both asynchronous andisochronous services are supported. Only a single ACL link can existbetween a master and a slave. As the ACL links are primarily used fordata transmission, packet retransmission is applied to ensure dataintegrity.

The data on the PAN channel is conveyed in packets. Each packet consistsof three entities: the access code, the header, and the payload. Theaccess code and header are of fixed size, either 72 bits or 54 bits. Thepayload can range from zero to a maximum of 2745 bits. The access codeidentifies all packets exchanged on the channel of the PAN. All packetssent in the same PAN are preceded by the same channel access code.

The Bluetooth audio-interface can use either a 64 kb/s log PCM format,A-law or μ-law compressed, or a 64 kb/s CVSD (Continuous Variable SlopeDelta Modulation) format.

FIGS. 7A and 7B are flow charts of an example of a method 700 ofestablishing a communication link between a mobile station and a consolesystem. The method 700 can be performed, for example, by the consolesystem 102 or 200 (and/or an intermediary device such as the PC 112) andthe mobile station 108 over a Bluetooth short range wireless network.

The method 700 is illustrated with the console system 200 acting as themaster and the mobile station 108 acting as the slave. However, themobile station 108 could act the part of the master with the consolesystem 200 acting the part of the slave. In addition, the position ofmaster and slave can be switch between the mobile station 108 and theconsole system 200. At blocks 702 and 704, the console system 200 andthe mobile station 108, respectively, individually activate theBluetooth module. These activations can occur at different times. Forexample, the console system 200 can have Bluetooth activatedcontinuously while the mobile station 108 may disable (turn off or putinto sleep mode) the Bluetooth module for power saving reasons.

When both Bluetooth modules are active, at junction 706, the process 700continues to block 708 where the console system 200 searches forBluetooth devices. Upon locating a Bluetooth device a “connect-request”message 709 is sent to the mobile station 108. At block 710, the mobilestation 108 processes the connect request message 709. Upon processingthe connect request message 709, the mobile station 108 sends anacknowledgement message 711 to the console system 200.

Upon receiving the acknowledgement message 711, the console system 200selects the mobile station 108 from the list of devices found (assumingthat there is more than one Bluetooth device present). After selectingthe mobile station 108 at the block 712, the console system 102transmits a notification message 713 to the mobile station 108.

The example method 700 establishes a secure (encrypted) connectionbetween the mobile station 108 and the console system 200. In someaspects an insecure connection can be used. In these insecure aspects,the remaining blocks 714-722 can be omitted.

Upon receiving the notification message 713, the user of the mobilestation 108 enters a passkey at block 714. The mobile station 108transmits a message 715 containing the passkey to the console system200. At block 716, the user enters the same pass key into the consolesystem 200.

At decision block 718, the console system 200 determines if the twopasskeys match. If the passkeys match, a success message is displayed onthe video display 104 at block 722 and the process 700 continues todecision block 724 (see FIG. 7B). If the pass keys do not match, anerror message is displayed on the video display 104 and the process 700returns to block 712 to repeat the security process.

If the pass key matched successfully, the console system 200 determinesif the mobiles station 108 can act as a controller of the game. Thisdetermination can include determining that the mobiles station 108 haspreviously received the game controller application. If the mobilestation cannot currently act as controller, the console system 200transmits a negative message to the mobile station 108 reporting thatthe mobile station is not currently equipped to act as controller. Themobile station can display an error message at block 726. At this point,the console system 200 and the mobile station 108 can initiate providinga game controller application as discussed above in reference to blocks510 and 515 in FIG. 5 and at blocks 610 and 615 in FIG. 6, and discussedin detail below in reference to FIG. 8.

If it was determined, at the decision block 724, that the mobile station108 can act as the controller, the process 700 continues to block 728where the console system 200 sends a confirmation message 729 to themobile station 108. The mobile station 108 can then display a messagequerying the user if they want to activate the game controllerapplication. At decision block 730, the mobile station processor 305determines if the user wishes to activate the controller application. Ifthe user indicates (through a key press, for example) that they do notwish to activate the controller application, the mobile station 108stops the process at block 734.

If it is determined, at the decision block 730, that the user wishes toactivate the mobile station 108 as the controller, the mobile station108 transmits a positive reply message 735 to the console system 200.The console system 200 then registers the mobile station as a controllerat block 736 and sends a confirmation message 737 to the mobile station108.

Upon receiving the confirmation message 737, the mobile station 108launches the game controller application at the block 738 and sends anacknowledgement message 739 to the console system 200. Theacknowledgement message 739 can include an indication of whether or notthe game controller application was launched successfully. At decisionblock 740, the console system determines, based on the acknowledgementmessage indication, If the game controller application is ready.

If it is determined that the mobile station 108 is ready to be acontroller, at block 740, the process 700 can terminate and the mobilestation 108 can assume the role of controller in the game beingexecuted. If it is determined that the mobile station is not ready to bea controller, at block 740, the console system 200 can display an errormessage on the video display 104 and steps 738-740 can be repeated.Alternatively, a new game controller application could be provided tothe mobile station 108 as discussed above. It should be noted that theblocks of method 700 in FIG. 7 can be rearranged, combined, modified andin some cases omitted.

FIG. 8 is a flow chart of an example of a method 800 of communicating agame controller application from a console system to a mobile station.The method 800 can be performed, for example, by the console system 102or 200 (and/or an intermediary device such as the PC 112) and the mobilestation 108 over a Bluetooth short range wireless network. The method800 illustrates examples of signaling between the console system 200 andthe mobile station 108 during execution of the functions at the blocks510 and 515 in the method 500 of FIG. 5 and the blocks 610-625 in themethod 600 of FIG. 6.

The method 800 starts at block 510-1 where the console system 200 sendsan information request message to the mobile station 108. The requestmessage can be a request to the mobile station 108 to send make andmodel information to the console system (e.g., an IMEI number in aspectswhere the mobile station 108 is a cell phone). The request message couldalso be a request for the mobile station 108 to send an HID descriptorpacket.

Upon receiving the information request message from the console system200, the mobile station 108 sends a response containing the requesteduser interface and/or make and model information at block 610-1. Forexample, the response message sent at block 610-1 can contain the makeand model information, or the HID descriptor, depending on what wasrequested by the console system 200.

Upon receiving the information sent by the mobile station 108 at theblock 610-1, the console system 200 can determine what transfer protocolto use to transmit the game controller application to the mobile station108. In this example, the console system is configured to default tousing the file transfer protocol, or FTP. FTP is a standardized protocolallowing for exchange of files between devices. FTP is based on OBEX(short for object exchange). OBEX was standardized by the Infrared DataAssociation and has been adopted by the Bluetooth Special InterestGroup.

At block 510-2, the console system 200 sends a message to the mobilestation 108 inquiring if the mobile station 108 supports FTP. Uponreceiving the FTP inquiry message, the mobile station 108 determines, atdecision block 610-2, if it supports FTP. If the mobiles stationsupports FTP, the process 800 continues to block 610-3 where the mobilestation initializes the FTP. If the mobile station 108 does not supportFTP, the process 800 continues at block 610-4 where the mobile stationinitializes the Generic Object Exchange profile (referred to as GOEP inBluetooth terminology). GOEP is a Bluetooth profile and is also based onOBEX. Upon initializing either FTP or GOEP, the mobile station sends aresponse message 610-5 indicating which profile (FTP or GOEP) is to beused for obtaining the game controller application.

Upon receiving the response message 610-5, the consoles systemidentifies the user interface characteristics of the mobile station 108.As was described above, the console system can obtain/create a gamecontroller application based on the identified user interface and/or themake and model of the mobile station 108. At block 515-1, the consolesystem sends the game controller application to the mobile station 108.The mobile station receives and stores the game controller applicationat the blocks 615 and 620. The mobile station 108 then launches the gamecontroller application at block 625 and transmits an acknowledgement(Ack) or negative acknowledgement (Nak) message indicating whether ornot it was successful in launching the game controller application.

Upon receiving the Ack or Nak message, the console system 200determines, at decision block 515-5, if the mobile station gamecontroller application was launched successfully. If the game controllerapplication was successfully launched, indicated by an Ack, the process800 concludes at 515-6 and the console system 200 can start the game orcontinue a current game and include the mobile station 108 as acontroller. If the game controller application was not successfullylaunched, indicated by a Nak, the console system displays an errormessage at block 515-7. In response to the Nak message, the consolesystem 200 can attempt to transmit another game controller applicationor wait until an Ack message is received from the mobile station 108indicating that the mobile station has successfully launched the gamecontroller application on a later attempt.

It should be noted that the blocks of method 800 in FIG. 8 can berearranged, combined, modified and in some cases omitted.

FIG. 9 is a flow chart of a method 900 of distributing game controllerapplications from a controller application server to a console systemand/or a mobile station. The method 900 can be performed, for example,by the controller application server 106 of FIGS. 1 and 4.

The method 900 starts at block 905 where the processor 405 stores aplurality of game controller applications in memory 410. The pluralityof game controller applications could have been created previously asdescribed above. In one aspect, preconfigured applications can be storedand cross referenced to the make or model of the mobile station 108 forwhich they were configured. In this aspect, an IMEI, or otherinformation identifying a make and model of the mobile station 108, canbe used to locate the game controller application. In another aspect,the preconfigured applications can be stored and cross referenced tofeatures present in a interface device description such as the HIDdescriptor discussed above. In this aspect, the game controllerapplication can be identified based on UI features that are or are notpresent in the HID descriptor, for example.

The game controller applications can be created and stored at the block905 when new mobile station makes and models are identified or whenimprovements to the game controller applications are made. In this way,the most up to date game controller applications can be supplied to theusers.

At block 910, the network interface 520 receives mobile stationidentifying information. In one aspect, the mobile station identifyinginformation is received from the console system 200 or from anintermediary device such as the PC 112. In another aspect, the mobilestation identifying information is received from the mobile station 108.As was described above, the mobile station identifying information canbe a make and model or a user interface description such as the HIDdescriptor. Using the mobile station identifying information, theprocessor 405 can identify a game controller application using the crossreferencing with which the game controller applications were stored inthe memory 410 at the block 905.

If the processor 405 is unable to identify a preconfigured gamecontroller application based on the make and model information and/orthe user interface description, there are some options available. If themake and model cannot be located in the cross references with which theapplications were stored, the controller application server can obtain auser interface description from a website such as a manufacturer'swebsite, a retailer's website, a service provider's website or otherwebsite that may have a description and/or a picture of the devicecorresponding to the make and model information. Upon identifying theuser interface features, a game controller application designed for amake and model with similar features can be identified.

If the user interface description is received at the block 910 and theprocessor 405 is unable to identify a preconfigured game controllerapplication with a similar user interface, the processor 405 can createa new game controller application. Methods similar to those describedabove in reference to the block 515 of FIG. 5 can be used to create thenew game controller application.

Upon receiving and identifying or creating a game controller applicationbased on the information received at the block 910, the process 900continues at block 915 where the network interface 420 transmits thegame controller application. In one aspect, the game controllerapplication is transmitted to the device from which the controllerapplication server received the mobile station identifying informationat block 910 (e.g., the console system 200, the intermediary PC 112 orthe mobile station 108).

In another aspect, the game controller application is transmitted to adevice other than the device from which the information was received atthe block 910. For example, the console system 200 (or the PC 112) cantransmit the mobile station identifying information at the block 910 andidentify a network address (e.g., an email address or IP address) thatis available to the mobile station 108. In this aspect, the gamecontroller application can be transmitted to the mobile station 108 atthe network address.

It should be noted that the blocks of method 900 in FIG. 9 can berearranged, combined, modified and in some cases omitted.

The above description of the disclosed embodiments is provided to enableany person skilled in the art to make or use the disclosure. Variousmodifications to these embodiments will be readily apparent to thoseskilled in the art, and the generic principles defined herein may beapplied to other embodiments without departing from the scope of thedisclosure. Thus, the disclosure is not intended to be limited to theembodiments shown herein but is to be accorded the widest scopeconsistent with the principles and novel features disclosed herein.

What is claimed is:
 1. A method implemented by a video game consolesystem, the method comprising: presenting video game content at adisplay communicatively coupled with the video game console system;receiving, from a mobile station over a data network, data for acontroller command associated with the video game content, wherein: thecontroller command is supported by the video game console system andcorresponds to a transformation of a user input received at a userinterface of the mobile station, the transformation is specified by atleast one of a first controller application hosted on the mobile stationor a second controller application hosted on the video game consolesystem, and the transformation is based on an association between thecontroller command supported by the video game console system and acharacteristic of the user interface of the mobile station; determininga result of an execution of the controller command; and transmitting, tothe mobile station over the data network, the result for presentation bythe mobile station.
 2. The method of claim 1, further comprising:receiving, from the mobile station, a description of the characteristicof the user interface; and transmitting the first controller applicationto the mobile station based on the description.
 3. The method of claim2, wherein the description is formatted according to a human interfacedevice (HID) profile standardized form.
 4. The method of claim 1,further comprising: receiving, from the mobile station, at least one ofa make or a model of the mobile station; and transmitting the firstcontroller application to the mobile station based on the at least oneof the make or the model.
 5. The method of claim 1, further comprising:receiving, from the mobile station, at least one of a make or a model ofthe mobile station; and transmitting, to the mobile station based on theat least one of the make or the model, a link to download the firstcontroller application from a server.
 6. A non-transitory computerreadable storage medium storing instructions that, upon execution by aprocessor of a mobile station, cause the mobile station to performoperations comprising: transmitting, to a video game console system overa data network, a controller command associated with video game contentof the video game console system, wherein: the controller command issupported by the video game console system and corresponds to atransformation of a user input received at a user interface of themobile station, the transformation is specified by a controllerapplication hosted on the mobile station, and the transformation isbased on an association between the controller command supported by thevideo game console system and a characteristic of the user interface ofthe mobile station; receiving, from the video game console system, aresult of an execution of the controller command by the video gameconsole system; and presenting the result.
 7. The non-transitorycomputer readable storage medium of claim 6, wherein the video gamecontent corresponds to content of a video game executed by the videogame console system, wherein the controller application configures theuser interface as a control interface to interact with the video game,and wherein the result comprises instructions about game commands. 8.The non-transitory computer readable storage medium of claim 6, whereinthe video game content corresponds to a first portion of content of avideo game executed by the video game console system, wherein thecontroller application configures the mobile station to present a secondportion of the content, and wherein the result comprises the secondportion.
 9. The non-transitory computer readable storage medium of claim6, wherein the result comprises a game result of a user playing a videogame, and wherein the controller application configures the mobilestation to present the game result.
 10. The non-transitory computerreadable storage medium of claim 6, wherein the controller applicationis hosted on the mobile station based on a download of the controllerapplication from a server to the mobile station.
 11. The non-transitorycomputer readable storage medium of claim 10, wherein the download ofthe controller application is based on at least one of: a characteristicof the mobile station or a model of the mobile station.
 12. Thenon-transitory computer readable storage medium of claim 6, wherein thecontroller application is hosted on the mobile station based on adownload of the controller application from the video game consolesystem.
 13. The non-transitory computer readable storage medium of claim12, wherein the download of the controller application is based on atransmission from the mobile station to the video game console system ofat least one of: a characteristic of the mobile station or a model ofthe mobile station.
 14. A system comprising: a game console configuredto present video game content at a display communicatively coupled withthe game console; and a mobile station communicatively coupled with thegame console over a data network and hosting a controller application,wherein an execution of the controller application configures the mobilestation to at least: transmit, to the game console over the datanetwork, a controller command associated with the video game content,wherein: the controller command is supported by the game console andcorresponds to a transformation of a user input received at a userinterface of the mobile station, the transformation is specified by thecontroller application hosted on the mobile station, and thetransformation is based on an association between the controller commandsupported by the game console and a characteristic of the user interfaceof the mobile station; receive, from the game console, a result of anexecution of the controller command by the game console; and present theresult.
 15. The system of claim 14, wherein the game console is furtherconfigured to present a virtual world at the display, and wherein thecontroller application further configure the mobile station to act as acontroller of the virtual world.
 16. The system of claim 14, wherein thegame console is further configured to execute a video game, wherein theuser input is associated with an execution of the video game by the gameconsole, and wherein the result comprises a game result from theexecution of the video game.
 17. The system of claim 14, wherein thegame console is further configured to execute a video game, wherein thevideo game content corresponds to a first portion of content of thevideo game, wherein the user input is associated with the execution ofthe video game by the game console, and wherein the result comprises asecond portion of the content of the video game.
 18. The system of claim14, further comprising a server storing code of the controllerapplication, wherein the mobile station is configured to download thecode of the controller application from the server.
 19. The system ofclaim 18, wherein the download of the code is based on receiving, by themobile station from the game console, a link to the code on the server.20. The system of claim 14, wherein the game console is furtherconfigured to execute a second controller application and discover themobile station based at least in part on the execution of the secondcontroller application.